package com.xique.door.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xique.door.bean.domain.ElevatorRun;
import com.xique.door.bean.search.ElevatorRunListSearch;
import com.xique.door.bean.vo.elevator.ElevatorRunStatisticVO;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author shd
 * @create 2021/10/13 14:50
 */
@Repository
public interface ElevatorRunMapper extends BaseMapper<ElevatorRun> {

    /**
     * 查询运行集合
     *
     * @param id 运行集合ID
     * @return 运行集合
     */
    public ElevatorRun selectElevatorRunById(Long id);

    /**
     * 获取最新的运行记录
     * @author shd
     * @date 2021/10/13 15:55
     * @param elvId
     * @return com.jzy.oms.community.elevator.bean.domain.ElevatorRun
     */
    ElevatorRun selectLastElevatorRunByElvId(Long elvId);

    /**
     * 查询运行集合列表
     *
     * @param elevatorRun 运行集合
     * @return 运行集合集合
     */
    public List<ElevatorRun> selectElevatorRunList(ElevatorRun elevatorRun);

    /**
     * 查询运行集合列表
     *
     * @param search 运行集合
     * @return 运行集合集合
     */
    List<ElevatorRun> selectElevatorRunListNew(ElevatorRunListSearch search);

    /**
     * 查询运行集合列表
     *
     * @param elvId 运行集合
     * @return 运行集合集合
     */
    List<ElevatorRun> selectElevatorRunFloorList(Long elvId);

    /**
     * 查询运行集合列表
     *
     * @param parkId 运行集合
     * @return 运行集合集合
     */
    List<ElevatorRun> selectElevatorRunFloorListByParkId(Long parkId);

    /**
     * 查询运行集合列表数量
     *
     * @param elvId 运行集合
     * @return 运行集合集合
     */
    Long selectElevatorRunFloorCountByElvId(Long elvId);

    /**
     * 查询运行集合列表数量
     *
     * @param parkId 运行集合
     * @return 运行集合集合
     */
    Long selectElevatorRunFloorCountByParkId(Long parkId);

    /**
     * 根据地区查询运行集合列表数量
     *
     * @param code 运行集合
     * @return 运行集合集合
     */
    Long selectElevatorRunFloorCountByAddressCode(Long code);

    /**
     * 新增运行集合
     *
     * @param elevatorRun 运行集合
     * @return 结果
     */
    public int insertElevatorRun(ElevatorRun elevatorRun);

    /**
     * 批量新增运行集合
     * @author shd
     * @date 2021/10/13 16:11
     * @param list
     * @return int
     */
    int batchInsertElevatorRuns(List<ElevatorRun> list);

    /**
     * 修改运行集合
     *
     * @param elevatorRun 运行集合
     * @return 结果
     */
    public int updateElevatorRun(ElevatorRun elevatorRun);

    /**
     * 删除运行集合
     *
     * @param id 运行集合ID
     * @return 结果
     */
    public int deleteElevatorRunById(Long id);

    /**
     * 批量删除运行集合
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteElevatorRunByIds(String[] ids);

    /**
     * 按星期统计运行里程数
     * @author shd
     * @date 2021/10/20 9:33
     * @param elvId
     * @return java.util.List<com.jzy.oms.community.elevator.bean.vo.ElevatorRunStatisticVO>
     */
    List<ElevatorRunStatisticVO> selectElevatorRunMeterStatisticByWeek(Long elvId);

    /**
     * 按月统计运行里程数
     * @author shd
     * @date 2021/10/20 9:34
     * @param elvId
     * @return java.util.List<com.jzy.oms.community.elevator.bean.vo.ElevatorRunStatisticVO>
     */
    List<ElevatorRunStatisticVO> selectElevatorRunMeterStatisticByMonth(Long elvId);

    /**
     * 按年统计运行里程数
     * @author shd
     * @date 2021/10/20 9:34
     * @param elvId
     * @return java.util.List<com.jzy.oms.community.elevator.bean.vo.ElevatorRunStatisticVO>
     */
    List<ElevatorRunStatisticVO> selectElevatorRunMeterStatisticByYear(Long elvId);

    /**
     * 根据电梯统计运行里程数
     * @author shd
     * @date 2021/10/27 13:27
     * @param elvId
     * @return java.lang.Long
     */
    Long selectElevatorRunMeterStatisticByElvId(Long elvId);

    /**
     * 根据电梯统计上下行时间跟次数
     * @author shd
     * @date 2021/11/1 11:47
     * @param elvId
     * @return com.jzy.oms.community.elevator.bean.vo.ElevatorRunStatisticVO
     */
    ElevatorRunStatisticVO selectElevatorRunTimeAndHourStatisticByElvId(Long elvId);
}
